package com.yk;

import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.time.Duration;

public class SelenimuTwo {
    public static void main(String[] args) {
        WebDriverManager.chromedriver().setup();
        WebDriver driver = new ChromeDriver();
        try {
            driver.get("https://www.imooc.com/");
            // 使用显式等待,等待元素可点击
            WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(3));


            //十大元素定位
//            driver.findElement(By.id("js-signin-btn")).click();
//            添加了 WebDriverWait 和 ExpectedConditions 的导入
//            创建了 WebDriverWait 对象，设置最大等待时间为10秒
//            使用 ExpectedConditions.elementToBeClickable() 方法等待元素可点击后再执行点击操作
//            这种方法比简单的 Thread.sleep() 更可靠，因为它会智能地等待元素变为可交互状态，而不是盲目地等待固定时间。
//            如果元素在指定时间内变为可交互，测试将继续执行；如果超时，将抛出 TimeoutException 异常，
//            这比 ElementNotInteractableException 更容易理解和调试。
            wait.until(ExpectedConditions.elementToBeClickable(By.id("js-signin-btn"))).click();

        } finally {
            System.out.println("关闭浏览器...");
//            driver.quit();
            System.out.println("浏览器已关闭!");
        }
    }
}
